package com.hera.process.web.primefaces.controller;

import java.io.IOException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hera.base.util.Constantes;
import com.hera.process.config.rest.delegate.SecurityDelegate;
import com.hera.process.security.domain.User;

@Component
@ManagedBean
@SessionScoped
public class UserController {

	@Autowired
	public SecurityDelegate securityDelegate;
	
	@Autowired
	public NotifyView notifyView;
	/**
	 *variables para poder convalidar con los datos de la base de datos. 
	 */
	private String usuario,password;
	private String mensaje;
	
	/**
	 * Metodo para validar el usuario y password del empleado
	 */
	public void validarUsuario() {
		
		try{
			User user1= new User();
			user1.setUserLogin(usuario.toUpperCase());
			user1.setPassword(password);
			User user2=securityDelegate.validateUser(user1);
			
			if(user2==null){
				System.out.println("usuario no valido");
				password="";
				mensaje="Usuario o contraseña incorrecta";
				FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
			}else{
				mensaje=null;
				System.out.println("usuario valido");
				FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constantes.USUARIO.SESSION_NAME, user2);
				FacesContext.getCurrentInstance().getExternalContext().redirect("bandeja.xhtml");
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
		
	}
	/**
	 * Metodo para cerrar sesion del usuario
	 */
	public void cerrarSesion() {
		
	     try {
	    	FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
			FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
			System.out.println("Cerrar sesion");
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	
	public void send() {
		System.out.println("enviando notificacion.....");
	    notifyView.send();
	}
	
	
	
	public String getUsuario() {
		return usuario;
	}


	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}


	public String getPassword() {
		return password;
	}


	public void setPassword(String password) {
		this.password = password;
	}
	public String getMensaje() {
		return mensaje;
	}
	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	

}
